Dans les premiers développements en JavaScript, Pollution des espaces de noms constituait un obstacle majeur. Lorsque du code non lié partage un ensemble unique de noms de variables globales, des collisions imprévisibles surviennent. La conception moderne passe d'une attitude désordonnée à des systèmes de modules isolés.
1. Isolement fonctionnel (IIFE)
En enveloppant le code dans une Expression de fonction immédiatement appelée (IIFE), nous créons un espace local privé. Les variables telles que noms restent enfermées à l'intérieur de la fonction, et sont inaccessibles depuis l'environnement global.
var interne = "secret";
console.log(interne);
})();
2. Interfaces basées sur les objets
Pour fournir une fonctionnalité au monde extérieur, un module retourne un objet agissant comme son interface publique. Cela regroupe les méthodes liées (comme nom et nombre) sous une seule variable globale réutilisée.
3. Le modèle d'exports
Une variation sophistiquée consiste à passer un exports objet dans l'IIFE. Cela permet au module d'attacher directement son API à une cible d'espace de noms spécifique, offrant ainsi une flexibilité quant à la manière dont le module est utilisé.